import Vue from 'vue'

Vue.prototype.$exportExcel = function () {
    // 可选参数默认值 url地址,data数据,responseType表明返回服务器返回的数据类型
    var defaultValue = {
        url: '',
        data: '',
        responseType: 'blob',
        fileName: 'file',
        method: 'post'
    };
    // 接收传进来的实参
    console.log(defaultValue);
    
    var params = arguments[0];
    // 修改默认值,添加新的值
    for (var prop in params) {
        defaultValue[prop] = params[prop];
    }
    console.log("excel params:",defaultValue);
    this.axios({ // 用axios发送post请求
        method: defaultValue.method,
        url: defaultValue.url, // 请求地址
        data: defaultValue.data, // 参数
        responseType: defaultValue.responseType, // 表明返回服务器返回的数据类型

    }).then(res => { // 处理返回的文件流
        //console.log(res)
        let fileName='';
        console.log("excel res:",res);
        if (res.headers['content-type'] == 'application/octet-stream;charset=UTF-8' || res.headers['content-type'] == 'application/vnd.ms-excel;charset=utf-8') {
            // 截取文件名，这里是后端返回了文件名+后缀，如果没有可以自己拼接
            if(res.headers['content-disposition']){
                let start=res.headers['content-disposition'].indexOf('=')+1;
                fileName = decodeURI(res.headers['content-disposition'].slice(start));
            }else{
                fileName=defaultValue.fileName+'.xls'
            }
           
            // 将`blob`对象转化成一个可访问的`url`
            let url = window.URL.createObjectURL(new Blob([res.data]));
            let link = document.createElement('a');
            link.style.display = 'none';
            link.href = url;
            link.setAttribute('download', fileName);
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        } else {
            this.$message({
                showClose: true,
                message: '导出失败'
            })
        }
    })
}
          